function results = queuing_theory_basics(varargin)
% 排队论基础分析函数
% 功能：M/M/1队列理论分析和性能评估
%
% 输入参数：
%   'arrival_rates' - 到达率向量 (默认: 0.1:0.1:0.9)
%   'service_rate'  - 服务率 (默认: 1)
%   'plot_results'  - 是否绘制结果 (默认: true)
%
% 输出：
%   results - 包含分析结果的结构体
%
% 示例：
%   results = queuing_theory_basics('arrival_rates', 0.1:0.1:0.9, 'service_rate', 1);

% 参数解析
p = inputParser;
addParameter(p, 'arrival_rates', 0.1:0.1:0.9);
addParameter(p, 'service_rate', 1);
addParameter(p, 'plot_results', true);
parse(p, varargin{:});

arrival_rates = p.Results.arrival_rates;
service_rate = p.Results.service_rate;
plot_results = p.Results.plot_results;

% 添加路径
addpath('../Common');

% 获取颜色定义
colors = color_definitions();

fprintf('=== 排队论基础分析 ===\n');

% M/M/1队列分析
mm1_metrics = zeros(length(arrival_rates), 4); % [利用率, 平均队长, 平均等待时间, 平均逗留时间]

for lambda_idx = 1:length(arrival_rates)
    lambda = arrival_rates(lambda_idx);
    mu = service_rate;
    rho = lambda / mu; % 利用率
    
    if rho < 1 % 稳定系统
        % M/M/1理论公式
        avg_queue_length = rho^2 / (1 - rho); % 平均等待队长
        avg_system_length = rho / (1 - rho); % 平均系统队长
        avg_waiting_time = rho / (mu - lambda); % 平均等待时间
        avg_system_time = 1 / (mu - lambda); % 平均逗留时间
        
        mm1_metrics(lambda_idx, :) = [rho, avg_queue_length, avg_waiting_time, avg_system_time];
    else
        mm1_metrics(lambda_idx, :) = [rho, NaN, NaN, NaN];
    end
end

% 绘制结果
if plot_results
    figure('Name', 'M/M/1排队系统', 'Position', [100, 100, 1200, 800]);
    
    subplot(2,2,1);
    plot(arrival_rates, mm1_metrics(:, 1), 'b-', 'LineWidth', 2);
    grid on;
    xlabel('到达率 λ');
    ylabel('系统利用率 ρ');
    title('M/M/1系统利用率');
    
    subplot(2,2,2);
    plot(arrival_rates, mm1_metrics(:, 2), 'r-', 'LineWidth', 2);
    grid on;
    xlabel('到达率 λ');
    ylabel('平均队长 L_q');
    title('M/M/1平均等待队长');
    
    subplot(2,2,3);
    plot(arrival_rates, mm1_metrics(:, 3), 'g-', 'LineWidth', 2);
    grid on;
    xlabel('到达率 λ');
    ylabel('平均等待时间 W_q');
    title('M/M/1平均等待时间');
    
    subplot(2,2,4);
    plot(arrival_rates, mm1_metrics(:, 4), 'm-', 'LineWidth', 2);
    grid on;
    xlabel('到达率 λ');
    ylabel('平均逗留时间 W');
    title('M/M/1平均逗留时间');
end

% 组织结果
results = struct();
results.arrival_rates = arrival_rates;
results.service_rate = service_rate;
results.utilization = mm1_metrics(:, 1);
results.avg_queue_length = mm1_metrics(:, 2);
results.avg_waiting_time = mm1_metrics(:, 3);
results.avg_system_time = mm1_metrics(:, 4);
results.colors = colors;

fprintf('排队论基础分析完成\n');
end